﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace Administracja
{
    public partial class Zakupy : UserControl
    {
        private int _idZ;
        private readonly List<int> _idZl = new List<int>();
        private int _index;

        public Zakupy()
        {
            InitializeComponent();
            Wyswietl();
        }

        private void Wyswietl()
        {
            int topItemIndex = 0;

            try
            {
                topItemIndex = lista.TopItem.Index;
            }
            catch { }

            lista.Items.Clear();
            _idZl.Clear();

            try
            {
                var reader2D = Baza.Wczytaj2D("SELECT ZAKUPY.ID, Nazwa, Nazwa_cd, Suma_Netto, Suma_Vat, Data_wplaty, Wplacona_kwota FROM ZAKUPY JOIN DOSTAWCY ON ZAKUPY.ID_D = Dostawcy.ID WHERE Data_wplaty "
                    + "LIKE '%-%" + data_zakupów.Value.Month + "-%' ORDER BY Data_wplaty, Nazwa, Nazwa_cd");

                foreach (var reader in reader2D)
                {
                    _idZl.Add(int.Parse(reader[0]));
                    ListViewItem element = lista.Items.Add(reader[1] + " " + reader[2]);
                    double brutto = Math.Round(Convert.ToDouble(reader[3].Replace(".", ",")) + Convert.ToDouble(reader[4].Replace(".", ",")), 2);
                    element.SubItems.Add(string.Format("{0:N2}", brutto));
                    element.SubItems.Add(OperacjeTekstowe.TrymujDate(reader[5]));
                    element.SubItems.Add(string.Format("{0:N2}", Convert.ToDouble(reader[6])));
                    if (Convert.ToDouble(reader[6]) < brutto) element.BackColor = Color.Orange;
                }
            }
            catch (Exception ex)
            {
                Wyjatki.Error(ex);
            }

            try
            {
                lista.Items[_index].Selected = true;
                lista.TopItem = lista.Items[topItemIndex];
                _idZ = _idZl[_index];
            }
            catch
            {
                _index = 0;

                try
                {
                    lista.Items[_index].Selected = true;
                    lista.TopItem = lista.Items[topItemIndex];
                    _idZ = _idZl[_index];
                }
                catch { }
            }
        }

        private void EdytujClick(object sender, EventArgs e)
        {
            if (lista.Items.Count > 0)
            {
                var z = new ZakupyEdytuj(_idZ, false) { MdiParent = ParentWindow.ParentStatic };
                z.FormClosed += Zamkniete;
                z.Show();
            }
            else
            {
                Wyjatki.Komunikat("Nie wybrano żadnego składnika", "Brak składnika!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void DodajClick(object sender, EventArgs e)
        {
            string dataAk = DateTime.Now.ToString().Substring(0, 10);

            _idZ = Baza.Ustaw("ZAKUPY");
            Baza.Zapisz("INSERT INTO ZAKUPY VALUES(GEN_ID(NUMERACJA_ZAKUPY,1),'0','0','0','0','" + dataAk + "','" + dataAk + "','" + dataAk + "','','" + dataAk + "','g','0')");

            var z = new ZakupyEdytuj(_idZ, true) { MdiParent = ParentWindow.ParentStatic };
            z.FormClosed += Zamkniete;
            z.Show();
        }

        private void UsunClick(object sender, EventArgs e)
        {
            if (lista.Items.Count > 0)
            {
                if (Wyjatki.Komunikat("Czy na pewno chcesz usunąć ID = " + _idZ + " ?", "Usunąć?", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    Baza.Zapisz("DELETE FROM ZAKUPY_SKLADNIKI WHERE ID_Z = '" + _idZ + "'");
                    Baza.Zapisz("DELETE FROM ZAKUPY WHERE ID = '" + _idZ + "'");
                }
                Wyswietl();
            }
            else
            {
                Wyjatki.Komunikat("Nie wybrano żadnego składnika", "Brak składnika!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void ListaSelectedIndexChanged(object sender, EventArgs e)
        {
            if (lista.Items.Count > 0)
            {
                try
                {
                    _index = lista.SelectedItems[0].Index;
                }
                catch
                {
                    _index = 0;
                }

                _idZ = _idZl[_index];
            }
        }

        private void DataZakupówValueChanged(object sender, EventArgs e)
        {
            Wyswietl();
        }

        private void Zamkniete(object sender, FormClosedEventArgs e)
        {
            Wyswietl();
        }
    }
}
